# -*- coding: utf-8 -*-

"""
微信推送模拟模块
当真实的微信推送模块不可用时，可以使用此模块作为替代，
记录推送尝试并提供详细的配置指导。
"""

import logging
import os
from datetime import datetime

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    handlers=[
        logging.FileHandler("logs/wechat_push_mock.log", encoding='utf-8'),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger("wechat_push_mock")

class WechatNotifierMock:
    """微信推送模拟类，用于记录推送尝试并提供配置指导"""
    
    def __init__(self):
        logger.warning("使用微信推送模拟模块。此模块不会实际发送消息，仅用于测试推送流程。")
        logger.info("请参考以下指南配置真实的微信推送功能：")
        self._show_config_guide()
        
        # 模拟配置
        self.target_group_name = "默认群组"
    
    def _show_config_guide(self):
        """显示配置指导信息"""
        guide = """\n=== 微信推送功能配置指南 ===
1. 创建配置文件 config.py，包含以下内容：
   WECHAT_PUSH_TYPE = "local"  # 或 "pushplus"
   
2. 根据选择的推送类型安装相应模块：
   - local: 需要安装 wxauto 模块 (`pip install wxauto`)
   - pushplus: 需要到 pushplus.plus 注册账号获取token
   
3. 确保微信客户端已登录（针对local类型）
   
4. 确保目标群组名称正确无误
"""
        logger.info(guide)
    
    def format_telegram_for_wechat(self, telegram):
        """格式化电报数据为微信消息格式"""
        time_str = telegram.get('time', '')
        title = telegram.get('title', '')
        content = telegram.get('content', '')
        url = telegram.get('url', '')
        
        message = f"【财联社电报】\n时间: {time_str}\n标题: {title}\n内容: {content}\n链接: {url}"
        return message
    
    def send_message_to_group(self, group_name, message):
        """模拟发送消息到指定群组"""
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        logger.info(f"[{timestamp}] 模拟发送消息到群组 '{group_name}'")
        logger.info(f"消息内容: {message}")
        
        # 检查群组名称是否符合预期格式
        if not group_name or len(group_name) < 2:
            logger.warning(f"群组名称 '{group_name}' 可能不正确，请确认微信中实际的群组名称")
            return False, f"群组名称格式不正确"
        
        # 模拟推送成功，但记录这只是模拟
        logger.info("注意：这是模拟推送，消息并未实际发送。请配置真实的微信推送模块以启用实际推送功能。")
        return True, "模拟推送成功"
    
    def send_telegram_to_wechat_group(self, telegram):
        """模拟发送电报数据到配置的群组"""
        message = self.format_telegram_for_wechat(telegram)
        return self.send_message_to_group(self.target_group_name, message)

# 创建全局实例
has_real_notifier = False
wechat_notifier = None

try:
    # 尝试导入真实的通知器
    try:
        from core.local_wechat_notifier import local_wechat_notifier
        wechat_notifier = local_wechat_notifier
        has_real_notifier = True
        logger.info("成功导入真实的本地微信通知器")
    except ImportError:
        try:
            from wechat_notifier import wechat_notifier
            has_real_notifier = True
            logger.info("成功导入真实的微信通知器")
        except ImportError:
            # 如果没有真实的通知器，则使用模拟通知器
            wechat_notifier = WechatNotifierMock()
except Exception as e:
    logger.error(f"导入微信通知器时发生错误: {e}")
    wechat_notifier = WechatNotifierMock()

# 如果需要直接使用此模块作为默认通知器，取消下面一行的注释
# local_wechat_notifier = wechat_notifier if has_real_notifier else WechatNotifierMock()